package com.blm.service;

import com.blm.dto.PasswordUpdateDTO;
import com.blm.dto.RegisterDTO;
import com.blm.dto.UserProfileUpdateDTO;
import com.blm.entity.User;
import com.blm.vo.UserVO;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

public interface UserService extends UserDetailsService { // Extend UserDetailsService for Spring Security integration

    UserVO register(RegisterDTO registerDTO);

    UserDetails getUserDetails(User user) throws UsernameNotFoundException;

    UserVO getUserProfile(Long userId);

    UserVO updateUserProfile(Long userId, UserProfileUpdateDTO profileUpdateDTO);

    User updateUserPassword(Long userId, PasswordUpdateDTO passwordUpdateDTO);

    User findUserById(Long userId); // Helper method to get User entity

    User findUserByUsername(String username);
}